package com.doit.day05

import scala.beans.BeanProperty


object _03_面相对象之class类 {
  def main(args: Array[String]): Unit = {

    val cat: Cat = new Cat()

    val tom: Cat = new Cat(10, "tom")

    val tom1: Cat = new Cat(10, "tom","black")

  }

}

//scala的class类和java中的class类有一个本质的区别  ==>scala的class类和构造器交织在一起
//在java中说需要写get方法，set方法 ==》  默认都是private的  并且还给你写好了get和set方法
/*class JinGeGe(){
  var id:Int = 1
  var name:String = "靖哥哥"
  var age:Int = 18
  val gender:String = "male"
  val girlFriend:String = "蓉姐姐"
  val add1 = (a:Int,b:Int)=>{
    a+b
  }

  def add(a:Int,b:Int) = a+b
}*/


//如果写了var 或者 val 的就是成员变量，就是这个类的属性 他就会给我们在底层写上get方法和set方法
//如果没有加val或者var的，那么他属于局部变量  就没有get和set方法
//class 类里面所有的东西都是非静态的
//马大爷  把static 关键字从scala中干掉了  class非静态的   object里面都是静态的
class JinGeGe(
             @BeanProperty
             val id:Int,
             @BeanProperty
              val name:String,
             @BeanProperty
              val age:Int,
             @BeanProperty
              val gender:String,
             @BeanProperty
              val girlFriend:String)




class Cat(){
  var id:Int = 1
  var name:String = _
  var color:String = "red"
  //辅助构造器   写在类中，方法名叫this的方法就是辅助构造器
  //因为辅助构造器的第一行必须调用主构造器或者其他辅助构造器
  def this(id:Int,name:String)={
    this()
    //我这个id明明就可以赋值，为啥不给我赋值嘞
    this.id = id
    this.name = name
  }



  def this(id:Int,name:String,color:String)={
    this(id,name)

    println("heheeheh")

    println("我要中五百万，谢谢大家！！！！！")
    this.color = color

  }


}